/*
 * 标准交易
 * <p>名称（中文）：新交易下单接口<br />名称（英文，xx.war）：opr-hessian.war<br />简介：合单支付下单与标准收款内部下单接口合并<br />wiki文档地址：http://wiki.yeepay.com/pages/viewpage.action?pageId=122095805(4.新api分组相关接口规划)<br />预计项目上线时间：2020年6月9日<br />归属/拟申请的sp编码（可选）：opr<br />期望api分组编码、名称（可选）：trade(标准交易)<br />涉及的接口：申请下单、订单查询、申请退款、退款查询</p>
 *
 * OpenAPI spec version: 1.0
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.hyt.it.ogt.kq.service.bm.model.dto.pay;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.ObjectUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * OrderQueryYopQueryOrderResDTOResult
 */
public class OrderQueryYopQueryOrderResDTOResult implements Serializable{

  private static final long serialVersionUID = 1L;

  /**
   * 返回码
   */
  @JsonProperty("code")
  private String code = null;

  /**
   * 返回信息
   */
  @JsonProperty("message")
  private String message = null;

  /**
   * 未命名
   */
  @JsonProperty("bizSystemNo")
  private String bizSystemNo = null;

  /**
   * 发起方商编
   */
  @JsonProperty("parentMerchantNo")
  private String parentMerchantNo = null;

  /**
   * 商户编号
   */
  @JsonProperty("merchantNo")
  private String merchantNo = null;

  /**
   * 商户收款请求号
   */
  @JsonProperty("orderId")
  private String orderId = null;

  /**
   * 易宝收款订单号
   */
  @JsonProperty("uniqueOrderNo")
  private String uniqueOrderNo = null;

  /**
   * 订单状态
   */
  @JsonProperty("status")
  private String status = null;

  /**
   * 订单金额
   */
  @JsonProperty("orderAmount")
  private BigDecimal orderAmount = null;

  /**
   * 支付金额
   */
  @JsonProperty("payAmount")
  private BigDecimal payAmount = null;

  /**
   * 商户手续费
   */
  @JsonProperty("merchantFee")
  private BigDecimal merchantFee = null;

  /**
   * 用户手续费
   */
  @JsonProperty("customerFee")
  private BigDecimal customerFee = null;

  /**
   * 支付成功时间
   */
  @JsonProperty("paySuccessDate")
  private String paySuccessDate = null;

  /**
   * 对账备注
   */
  @JsonProperty("memo")
  private String memo = null;

  /**
   * 支付方式
   */
  @JsonProperty("payWay")
  private String payWay = null;

  /**
   * token
   */
  @JsonProperty("token")
  private String token = null;

  /**
   * 分账都订单标识
   */
  @JsonProperty("fundProcessType")
  private String fundProcessType = null;

  /**
   * 银行订单号
   */
  @JsonProperty("bankOrderId")
  private String bankOrderId = null;

  /**
   * 渠道订单号
   */
  @JsonProperty("channelOrderId")
  private String channelOrderId = null;

  /**
   * 渠道类型
   */
  @JsonProperty("channel")
  private String channel = null;

  /**
   * 用户实际支付金额
   */
  @JsonProperty("realPayAmount")
  private BigDecimal realPayAmount = null;

  /**
   * 剩余可分账金额
   */
  @JsonProperty("unSplitAmount")
  private BigDecimal unSplitAmount = null;

  /**
   * 付款信息
   */
  @JsonProperty("payerInfo")
  private OrderQueryPayerInfoResult payerInfo = null;

  /**
   * 渠道侧优惠列表
   */
  @JsonProperty("channelPromotionInfo")
  private List<OrderQueryChannelPromotionInfoDTOResult> channelPromotionInfo = null;

  /**
   * 易宝优惠列表
   */
  @JsonProperty("ypPromotionInfo")
  private List<OrderQueryYpPromotionInfoDTOResult> ypPromotionInfo = null;

  public OrderQueryYopQueryOrderResDTOResult code(String code) {
    this.code = code;
    return this;
  }

   /**
   * 返回码
   * @return code
  **/

  public String getCode() {
    return code;
  }

  public void setCode(String code) {
    this.code = code;
  }

  public OrderQueryYopQueryOrderResDTOResult message(String message) {
    this.message = message;
    return this;
  }

   /**
   * 返回信息
   * @return message
  **/

  public String getMessage() {
    return message;
  }

  public void setMessage(String message) {
    this.message = message;
  }

  public OrderQueryYopQueryOrderResDTOResult bizSystemNo(String bizSystemNo) {
    this.bizSystemNo = bizSystemNo;
    return this;
  }

   /**
   * 未命名
   * @return bizSystemNo
  **/

  public String getBizSystemNo() {
    return bizSystemNo;
  }

  public void setBizSystemNo(String bizSystemNo) {
    this.bizSystemNo = bizSystemNo;
  }

  public OrderQueryYopQueryOrderResDTOResult parentMerchantNo(String parentMerchantNo) {
    this.parentMerchantNo = parentMerchantNo;
    return this;
  }

   /**
   * 发起方商编
   * @return parentMerchantNo
  **/

  public String getParentMerchantNo() {
    return parentMerchantNo;
  }

  public void setParentMerchantNo(String parentMerchantNo) {
    this.parentMerchantNo = parentMerchantNo;
  }

  public OrderQueryYopQueryOrderResDTOResult merchantNo(String merchantNo) {
    this.merchantNo = merchantNo;
    return this;
  }

   /**
   * 商户编号
   * @return merchantNo
  **/

  public String getMerchantNo() {
    return merchantNo;
  }

  public void setMerchantNo(String merchantNo) {
    this.merchantNo = merchantNo;
  }

  public OrderQueryYopQueryOrderResDTOResult orderId(String orderId) {
    this.orderId = orderId;
    return this;
  }

   /**
   * 商户收款请求号
   * @return orderId
  **/

  public String getOrderId() {
    return orderId;
  }

  public void setOrderId(String orderId) {
    this.orderId = orderId;
  }

  public OrderQueryYopQueryOrderResDTOResult uniqueOrderNo(String uniqueOrderNo) {
    this.uniqueOrderNo = uniqueOrderNo;
    return this;
  }

   /**
   * 易宝收款订单号
   * @return uniqueOrderNo
  **/

  public String getUniqueOrderNo() {
    return uniqueOrderNo;
  }

  public void setUniqueOrderNo(String uniqueOrderNo) {
    this.uniqueOrderNo = uniqueOrderNo;
  }

  public OrderQueryYopQueryOrderResDTOResult status(String status) {
    this.status = status;
    return this;
  }

   /**
   * 订单状态
   * @return status
  **/

  public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public OrderQueryYopQueryOrderResDTOResult orderAmount(BigDecimal orderAmount) {
    this.orderAmount = orderAmount;
    return this;
  }

   /**
   * 订单金额
   * @return orderAmount
  **/

  public BigDecimal getOrderAmount() {
    return orderAmount;
  }

  public void setOrderAmount(BigDecimal orderAmount) {
    this.orderAmount = orderAmount;
  }

  public OrderQueryYopQueryOrderResDTOResult payAmount(BigDecimal payAmount) {
    this.payAmount = payAmount;
    return this;
  }

   /**
   * 支付金额
   * @return payAmount
  **/

  public BigDecimal getPayAmount() {
    return payAmount;
  }

  public void setPayAmount(BigDecimal payAmount) {
    this.payAmount = payAmount;
  }

  public OrderQueryYopQueryOrderResDTOResult merchantFee(BigDecimal merchantFee) {
    this.merchantFee = merchantFee;
    return this;
  }

   /**
   * 商户手续费
   * @return merchantFee
  **/

  public BigDecimal getMerchantFee() {
    return merchantFee;
  }

  public void setMerchantFee(BigDecimal merchantFee) {
    this.merchantFee = merchantFee;
  }

  public OrderQueryYopQueryOrderResDTOResult customerFee(BigDecimal customerFee) {
    this.customerFee = customerFee;
    return this;
  }

   /**
   * 用户手续费
   * @return customerFee
  **/

  public BigDecimal getCustomerFee() {
    return customerFee;
  }

  public void setCustomerFee(BigDecimal customerFee) {
    this.customerFee = customerFee;
  }

  public OrderQueryYopQueryOrderResDTOResult paySuccessDate(String paySuccessDate) {
    this.paySuccessDate = paySuccessDate;
    return this;
  }

   /**
   * 支付成功时间
   * @return paySuccessDate
  **/

  public String getPaySuccessDate() {
    return paySuccessDate;
  }

  public void setPaySuccessDate(String paySuccessDate) {
    this.paySuccessDate = paySuccessDate;
  }

  public OrderQueryYopQueryOrderResDTOResult memo(String memo) {
    this.memo = memo;
    return this;
  }

   /**
   * 对账备注
   * @return memo
  **/

  public String getMemo() {
    return memo;
  }

  public void setMemo(String memo) {
    this.memo = memo;
  }

  public OrderQueryYopQueryOrderResDTOResult payWay(String payWay) {
    this.payWay = payWay;
    return this;
  }

   /**
   * 支付方式
   * @return payWay
  **/

  public String getPayWay() {
    return payWay;
  }

  public void setPayWay(String payWay) {
    this.payWay = payWay;
  }

  public OrderQueryYopQueryOrderResDTOResult token(String token) {
    this.token = token;
    return this;
  }

   /**
   * token
   * @return token
  **/

  public String getToken() {
    return token;
  }

  public void setToken(String token) {
    this.token = token;
  }

  public OrderQueryYopQueryOrderResDTOResult fundProcessType(String fundProcessType) {
    this.fundProcessType = fundProcessType;
    return this;
  }

   /**
   * 分账都订单标识
   * @return fundProcessType
  **/

  public String getFundProcessType() {
    return fundProcessType;
  }

  public void setFundProcessType(String fundProcessType) {
    this.fundProcessType = fundProcessType;
  }

  public OrderQueryYopQueryOrderResDTOResult bankOrderId(String bankOrderId) {
    this.bankOrderId = bankOrderId;
    return this;
  }

   /**
   * 银行订单号
   * @return bankOrderId
  **/

  public String getBankOrderId() {
    return bankOrderId;
  }

  public void setBankOrderId(String bankOrderId) {
    this.bankOrderId = bankOrderId;
  }

  public OrderQueryYopQueryOrderResDTOResult channelOrderId(String channelOrderId) {
    this.channelOrderId = channelOrderId;
    return this;
  }

   /**
   * 渠道订单号
   * @return channelOrderId
  **/

  public String getChannelOrderId() {
    return channelOrderId;
  }

  public void setChannelOrderId(String channelOrderId) {
    this.channelOrderId = channelOrderId;
  }

  public OrderQueryYopQueryOrderResDTOResult channel(String channel) {
    this.channel = channel;
    return this;
  }

   /**
   * 渠道类型
   * @return channel
  **/

  public String getChannel() {
    return channel;
  }

  public void setChannel(String channel) {
    this.channel = channel;
  }

  public OrderQueryYopQueryOrderResDTOResult realPayAmount(BigDecimal realPayAmount) {
    this.realPayAmount = realPayAmount;
    return this;
  }

   /**
   * 用户实际支付金额
   * @return realPayAmount
  **/

  public BigDecimal getRealPayAmount() {
    return realPayAmount;
  }

  public void setRealPayAmount(BigDecimal realPayAmount) {
    this.realPayAmount = realPayAmount;
  }

  public OrderQueryYopQueryOrderResDTOResult unSplitAmount(BigDecimal unSplitAmount) {
    this.unSplitAmount = unSplitAmount;
    return this;
  }

   /**
   * 剩余可分账金额
   * @return unSplitAmount
  **/

  public BigDecimal getUnSplitAmount() {
    return unSplitAmount;
  }

  public void setUnSplitAmount(BigDecimal unSplitAmount) {
    this.unSplitAmount = unSplitAmount;
  }

  public OrderQueryYopQueryOrderResDTOResult payerInfo(OrderQueryPayerInfoResult payerInfo) {
    this.payerInfo = payerInfo;
    return this;
  }

   /**
   * 付款信息
   * @return payerInfo
  **/

  public OrderQueryPayerInfoResult getPayerInfo() {
    return payerInfo;
  }

  public void setPayerInfo(OrderQueryPayerInfoResult payerInfo) {
    this.payerInfo = payerInfo;
  }

  public OrderQueryYopQueryOrderResDTOResult channelPromotionInfo(List<OrderQueryChannelPromotionInfoDTOResult> channelPromotionInfo) {
    this.channelPromotionInfo = channelPromotionInfo;
    return this;
  }

  public OrderQueryYopQueryOrderResDTOResult addChannelPromotionInfoItem(OrderQueryChannelPromotionInfoDTOResult channelPromotionInfoItem) {
    if (this.channelPromotionInfo == null) {
      this.channelPromotionInfo = new ArrayList<>();
    }
    this.channelPromotionInfo.add(channelPromotionInfoItem);
    return this;
  }

   /**
   * 渠道侧优惠列表
   * @return channelPromotionInfo
  **/

  public List<OrderQueryChannelPromotionInfoDTOResult> getChannelPromotionInfo() {
    return channelPromotionInfo;
  }

  public void setChannelPromotionInfo(List<OrderQueryChannelPromotionInfoDTOResult> channelPromotionInfo) {
    this.channelPromotionInfo = channelPromotionInfo;
  }

  public OrderQueryYopQueryOrderResDTOResult ypPromotionInfo(List<OrderQueryYpPromotionInfoDTOResult> ypPromotionInfo) {
    this.ypPromotionInfo = ypPromotionInfo;
    return this;
  }

  public OrderQueryYopQueryOrderResDTOResult addYpPromotionInfoItem(OrderQueryYpPromotionInfoDTOResult ypPromotionInfoItem) {
    if (this.ypPromotionInfo == null) {
      this.ypPromotionInfo = new ArrayList<>();
    }
    this.ypPromotionInfo.add(ypPromotionInfoItem);
    return this;
  }

   /**
   * 易宝优惠列表
   * @return ypPromotionInfo
  **/

  public List<OrderQueryYpPromotionInfoDTOResult> getYpPromotionInfo() {
    return ypPromotionInfo;
  }

  public void setYpPromotionInfo(List<OrderQueryYpPromotionInfoDTOResult> ypPromotionInfo) {
    this.ypPromotionInfo = ypPromotionInfo;
  }


  @Override
  public boolean equals(Object o) {
  if (this == o) {
    return true;
  }
  if (o == null || getClass() != o.getClass()) {
    return false;
  }
    OrderQueryYopQueryOrderResDTOResult orderQueryYopQueryOrderResDTOResult = (OrderQueryYopQueryOrderResDTOResult) o;
    return ObjectUtils.equals(this.code, orderQueryYopQueryOrderResDTOResult.code) &&
    ObjectUtils.equals(this.message, orderQueryYopQueryOrderResDTOResult.message) &&
    ObjectUtils.equals(this.bizSystemNo, orderQueryYopQueryOrderResDTOResult.bizSystemNo) &&
    ObjectUtils.equals(this.parentMerchantNo, orderQueryYopQueryOrderResDTOResult.parentMerchantNo) &&
    ObjectUtils.equals(this.merchantNo, orderQueryYopQueryOrderResDTOResult.merchantNo) &&
    ObjectUtils.equals(this.orderId, orderQueryYopQueryOrderResDTOResult.orderId) &&
    ObjectUtils.equals(this.uniqueOrderNo, orderQueryYopQueryOrderResDTOResult.uniqueOrderNo) &&
    ObjectUtils.equals(this.status, orderQueryYopQueryOrderResDTOResult.status) &&
    ObjectUtils.equals(this.orderAmount, orderQueryYopQueryOrderResDTOResult.orderAmount) &&
    ObjectUtils.equals(this.payAmount, orderQueryYopQueryOrderResDTOResult.payAmount) &&
    ObjectUtils.equals(this.merchantFee, orderQueryYopQueryOrderResDTOResult.merchantFee) &&
    ObjectUtils.equals(this.customerFee, orderQueryYopQueryOrderResDTOResult.customerFee) &&
    ObjectUtils.equals(this.paySuccessDate, orderQueryYopQueryOrderResDTOResult.paySuccessDate) &&
    ObjectUtils.equals(this.memo, orderQueryYopQueryOrderResDTOResult.memo) &&
    ObjectUtils.equals(this.payWay, orderQueryYopQueryOrderResDTOResult.payWay) &&
    ObjectUtils.equals(this.token, orderQueryYopQueryOrderResDTOResult.token) &&
    ObjectUtils.equals(this.fundProcessType, orderQueryYopQueryOrderResDTOResult.fundProcessType) &&
    ObjectUtils.equals(this.bankOrderId, orderQueryYopQueryOrderResDTOResult.bankOrderId) &&
    ObjectUtils.equals(this.channelOrderId, orderQueryYopQueryOrderResDTOResult.channelOrderId) &&
    ObjectUtils.equals(this.channel, orderQueryYopQueryOrderResDTOResult.channel) &&
    ObjectUtils.equals(this.realPayAmount, orderQueryYopQueryOrderResDTOResult.realPayAmount) &&
    ObjectUtils.equals(this.unSplitAmount, orderQueryYopQueryOrderResDTOResult.unSplitAmount) &&
    ObjectUtils.equals(this.payerInfo, orderQueryYopQueryOrderResDTOResult.payerInfo) &&
    ObjectUtils.equals(this.channelPromotionInfo, orderQueryYopQueryOrderResDTOResult.channelPromotionInfo) &&
    ObjectUtils.equals(this.ypPromotionInfo, orderQueryYopQueryOrderResDTOResult.ypPromotionInfo);
  }

  @Override
  public int hashCode() {
    return ObjectUtils.hashCodeMulti(code, message, bizSystemNo, parentMerchantNo, merchantNo, orderId, uniqueOrderNo, status, orderAmount, payAmount, merchantFee, customerFee, paySuccessDate, memo, payWay, token, fundProcessType, bankOrderId, channelOrderId, channel, realPayAmount, unSplitAmount, payerInfo, channelPromotionInfo, ypPromotionInfo);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class OrderQueryYopQueryOrderResDTOResult {\n");

    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    message: ").append(toIndentedString(message)).append("\n");
    sb.append("    bizSystemNo: ").append(toIndentedString(bizSystemNo)).append("\n");
    sb.append("    parentMerchantNo: ").append(toIndentedString(parentMerchantNo)).append("\n");
    sb.append("    merchantNo: ").append(toIndentedString(merchantNo)).append("\n");
    sb.append("    orderId: ").append(toIndentedString(orderId)).append("\n");
    sb.append("    uniqueOrderNo: ").append(toIndentedString(uniqueOrderNo)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    orderAmount: ").append(toIndentedString(orderAmount)).append("\n");
    sb.append("    payAmount: ").append(toIndentedString(payAmount)).append("\n");
    sb.append("    merchantFee: ").append(toIndentedString(merchantFee)).append("\n");
    sb.append("    customerFee: ").append(toIndentedString(customerFee)).append("\n");
    sb.append("    paySuccessDate: ").append(toIndentedString(paySuccessDate)).append("\n");
    sb.append("    memo: ").append(toIndentedString(memo)).append("\n");
    sb.append("    payWay: ").append(toIndentedString(payWay)).append("\n");
    sb.append("    token: ").append(toIndentedString(token)).append("\n");
    sb.append("    fundProcessType: ").append(toIndentedString(fundProcessType)).append("\n");
    sb.append("    bankOrderId: ").append(toIndentedString(bankOrderId)).append("\n");
    sb.append("    channelOrderId: ").append(toIndentedString(channelOrderId)).append("\n");
    sb.append("    channel: ").append(toIndentedString(channel)).append("\n");
    sb.append("    realPayAmount: ").append(toIndentedString(realPayAmount)).append("\n");
    sb.append("    unSplitAmount: ").append(toIndentedString(unSplitAmount)).append("\n");
    sb.append("    payerInfo: ").append(toIndentedString(payerInfo)).append("\n");
    sb.append("    channelPromotionInfo: ").append(toIndentedString(channelPromotionInfo)).append("\n");
    sb.append("    ypPromotionInfo: ").append(toIndentedString(ypPromotionInfo)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

